#include <asm.h>
#include <regdef.h>
#include <inst_test.h>

LEAF(n24_add_test)
    .set noreorder
    addiu s0, s0 ,1
    li  s2, 0x00
###test inst
    TEST_ADD(0x0480ff04, 0x40933204, 0x45143108)
    TEST_ADD(0x2a19dd40, 0xa87971e0, 0xd2934f20)
    TEST_ADD(0x80613360, 0x42adf91d, 0xc30f2c7d)
    TEST_ADD(0x5bec25e2, 0xf96edfe4, 0x555b05c6)
    TEST_ADD(0x70b9a200, 0xd9bf4900, 0x4a78eb00)
    TEST_ADD(0xb3b72934, 0x3c7ead62, 0xf035d696)
    TEST_ADD(0x6d0c4270, 0x81b2013c, 0xeebe43ac)
    TEST_ADD(0x3c35a398, 0x18fb7c38, 0x55311fd0)
    TEST_ADD(0xc7ef22ec, 0x04fe6cdb, 0xcced8fc7)
    TEST_ADD(0x7080076c, 0xa343f990, 0x13c400fc)
    TEST_ADD(0x3a1b3c40, 0xc5af4eea, 0xffca8b2a)
    TEST_ADD(0x29690000, 0x8b34011c, 0xb49d011c)
    TEST_ADD(0xb4667af0, 0x32f36c2c, 0xe759e71c)
    TEST_ADD(0xe4e786e2, 0xb3c9e1ad, 0x98b1688f)
    TEST_ADD(0xfddfd88a, 0xf06ba9f0, 0xee4b827a)
    TEST_ADD(0xbf2d6a27, 0x59768f20, 0x18a3f947)
    TEST_ADD(0x02fab2dc, 0xc1f96840, 0xc4f41b1c)
    TEST_ADD(0xcb72c8d8, 0xc005a5a4, 0x8b786e7c)
    TEST_ADD(0x0913c7b8, 0x6c5f982c, 0x75735fe4)
    TEST_ADD(0xfb64f900, 0x9625bacc, 0x918ab3cc)
    TEST_ADD(0xa8f1f964, 0x7cd0bd40, 0x25c2b6a4)
    TEST_ADD(0xf6037818, 0x6fc0fc40, 0x65c47458)
    TEST_ADD(0x4a8f2a00, 0x1b0931d8, 0x65985bd8)
    TEST_ADD(0xe8d98fda, 0xfff47fd0, 0xe8ce0faa)
    TEST_ADD(0xbde8c034, 0xd7c66c81, 0x95af2cb5)
    TEST_ADD(0x2890ffb0, 0x45d5eda8, 0x6e66ed58)
    TEST_ADD(0xd8d40d50, 0x1daabd88, 0xf67ecad8)
    TEST_ADD(0x4e396fda, 0x8b7f3f2a, 0xd9b8af04)
    TEST_ADD(0x6e51cc78, 0xdb9be892, 0x49edb50a)
    TEST_ADD(0xe5f5e676, 0x15697ab8, 0xfb5f612e)
    TEST_ADD(0x9382c800, 0x5a74eb25, 0xedf7b325)
    TEST_ADD(0xb4c0b8b1, 0x1bb1d280, 0xd0728b31)
    TEST_ADD(0x07b508fc, 0xba89d4b0, 0xc23eddac)
    TEST_ADD(0xa7043250, 0x62ccff3c, 0x09d1318c)
    TEST_ADD(0x5501212e, 0x88e7310c, 0xdde8523a)
    TEST_ADD(0x6f855e10, 0xd09444cc, 0x4019a2dc)
    TEST_ADD(0x0717db60, 0x01c9a7d2, 0x08e18332)
    TEST_ADD(0x61421240, 0xa75cb880, 0x089ecac0)
    TEST_ADD(0xb0c453e0, 0xe8e2b0e0, 0x99a704c0)
    TEST_ADD(0x2c8fc895, 0xc0d216c8, 0xed61df5d)
    TEST_ADD(0x2c07a9b4, 0x045684e0, 0x305e2e94)
    TEST_ADD(0xc378c630, 0x2d6ff8c4, 0xf0e8bef4)
    TEST_ADD(0x654a6d00, 0xf6d8fa3c, 0x5c23673c)
    TEST_ADD(0xd8d7dfb8, 0x3646eb40, 0x0f1ecaf8)
    TEST_ADD(0x2e4606cb, 0x07c22b08, 0x360831d3)
    TEST_ADD(0x102510e0, 0xb8469a80, 0xc86bab60)
    TEST_ADD(0xb4661d44, 0xdab644c0, 0x8f1c6204)
    TEST_ADD(0x3bfc96b0, 0x94089300, 0xd00529b0)
    TEST_ADD(0xd2578988, 0x5f0c1e7c, 0x3163a804)
    TEST_ADD(0x19543980, 0x06490f30, 0x1f9d48b0)
    TEST_ADD(0xdb0bc840, 0x76bca630, 0x51c86e70)
    TEST_ADD(0x125b85d8, 0x991656ff, 0xab71dcd7)
    TEST_ADD(0xee749ed2, 0xd0ae0328, 0xbf22a1fa)
    TEST_ADD(0xf349bde8, 0xc50f59a0, 0xb8591788)
    TEST_ADD(0x638dc380, 0xa2bc7b50, 0x064a3ed0)
    TEST_ADD(0xd08c0ea7, 0x289f2bee, 0xf92b3a95)
    TEST_ADD(0xafa6f5dd, 0x230ae844, 0xd2b1de21)
    TEST_ADD(0x659a6000, 0xdac5fc2a, 0x40605c2a)
    TEST_ADD(0x130e5c06, 0x9fc575b0, 0xb2d3d1b6)
    TEST_ADD(0x2543a725, 0x1eeaf0c0, 0x442e97e5)
    TEST_ADD(0xa34df8e6, 0x74b25fe3, 0x180058c9)
    TEST_ADD(0x894cb10e, 0x28ddc3f0, 0xb22a74fe)
    TEST_ADD(0xc1e653e8, 0x0548668c, 0xc72eba74)
    TEST_ADD(0xf42e089d, 0x8c10cbf2, 0x803ed48f)
    TEST_ADD(0x87b28080, 0x14c8d33a, 0x9c7b53ba)
    TEST_ADD(0x9445a5e8, 0x59d81740, 0xee1dbd28)
    TEST_ADD(0xece166c4, 0x037890b8, 0xf059f77c)
    TEST_ADD(0x6f5f8ad8, 0xc428d407, 0x33885edf)
    TEST_ADD(0x0fb040e4, 0x43e9fdbe, 0x539a3ea2)
    TEST_ADD(0x58b10ae6, 0x9b7c55a6, 0xf42d608c)
    TEST_ADD(0x67284f30, 0xb43f65c8, 0x1b67b4f8)
    TEST_ADD(0x93e25fd6, 0x48db9200, 0xdcbdf1d6)
    TEST_ADD(0xdb381270, 0x1ee06388, 0xfa1875f8)
    TEST_ADD(0x1172cacc, 0xc155ac94, 0xd2c87760)
    TEST_ADD(0x24ebe196, 0xabf58f5b, 0xd0e170f1)
    TEST_ADD(0x86298c20, 0x4991917c, 0xcfbb1d9c)
    TEST_ADD(0xd0439d20, 0x210c4488, 0xf14fe1a8)
    TEST_ADD(0x7807fdc4, 0xfa711356, 0x7279111a)
    TEST_ADD(0xcc9eaa56, 0x63b337f0, 0x3051e246)
    TEST_ADD(0xc0234854, 0x1d03d95c, 0xdd2721b0)
    TEST_ADD(0x9a02ad94, 0x18cfb1be, 0xb2d25f52)
    TEST_ADD(0xb841ce28, 0x2143a6d8, 0xd9857500)
    TEST_ADD(0xb3c42189, 0x48aeb8d8, 0xfc72da61)
    TEST_ADD(0xfaffbdc0, 0x4fe32000, 0x4ae2ddc0)
    TEST_ADD(0xde7c1570, 0xdda99466, 0xbc25a9d6)
    TEST_ADD(0x3fe995bc, 0x27dbab12, 0x67c540ce)
    TEST_ADD(0x447b1c9e, 0xefd486b6, 0x344fa354)
    TEST_ADD(0xb9f9b5b5, 0x64ddb854, 0x1ed76e09)
    TEST_ADD(0x41246f7e, 0xa6594438, 0xe77db3b6)
    TEST_ADD(0xe5db9814, 0xa5a7cbb0, 0x8b8363c4)
    TEST_ADD(0x99a77b00, 0xe8727460, 0x8219ef60)
    TEST_ADD(0x5def1400, 0xfe18c6ce, 0x5c07dace)
    TEST_ADD(0x37b6f4e8, 0xaae166b1, 0xe2985b99)
    TEST_ADD(0xdcffe600, 0x210467fd, 0xfe044dfd)
    TEST_ADD(0x609865a5, 0xd5660a0a, 0x35fe6faf)
    TEST_ADD(0x54a40d20, 0x9b392c22, 0xefdd3942)
    TEST_ADD(0x1de75ded, 0x30b69371, 0x4e9df15e)
    TEST_ADD(0x27b2c3c0, 0xc65ac230, 0xee0d85f0)
    TEST_ADD(0x11262f28, 0xa5386ec0, 0xb65e9de8)
    TEST_ADD(0xa7a41dd0, 0x3946369c, 0xe0ea546c)
    TEST_ADD(0xe6ef4d40, 0xa2599058, 0x8948dd98)
    TEST_ADD(0x429e1470, 0xa72ce8b2, 0xe9cafd22)
    TEST_ADD(0x217492f0, 0xd3c71dec, 0xf53bb0dc)
    TEST_ADD(0x0f943daa, 0xa5f79c5c, 0xb58bda06)
    TEST_ADD(0x8f4fd7a1, 0x43ebfee0, 0xd33bd681)
    TEST_ADD(0x956bc990, 0x4fcb533c, 0xe5371ccc)
    TEST_ADD(0x8144d10c, 0x4a126abf, 0xcb573bcb)
    TEST_ADD(0x7b6197d9, 0x86c2e19c, 0x02247975)
    TEST_ADD(0x5310cb33, 0xccc59f90, 0x1fd66ac3)
    TEST_ADD(0x5db2c780, 0xb05b4fa0, 0x0e0e1720)
    TEST_ADD(0xdcbfed68, 0x0aa85480, 0xe76841e8)
    TEST_ADD(0xcfc459fc, 0x7fdc2bd0, 0x4fa085cc)
    TEST_ADD(0x16da3978, 0xfdc7d63c, 0x14a20fb4)
    TEST_ADD(0x3dc3b03c, 0x23b1d078, 0x617580b4)
    TEST_ADD(0x00a93035, 0x6c55f880, 0x6cff28b5)
    TEST_ADD(0xe5733fd8, 0xa6fa4164, 0x8c6d813c)
    TEST_ADD(0x35a6ea20, 0xb5691b76, 0xeb100596)
    TEST_ADD(0x7b9da3d6, 0x9ef15eb6, 0x1a8f028c)
    TEST_ADD(0xe5678dd8, 0x52409b00, 0x37a828d8)
    TEST_ADD(0x0d3ce538, 0x527e41f2, 0x5fbb272a)
    TEST_ADD(0x363757cc, 0x8a98cdd8, 0xc0d025a4)
    TEST_ADD(0x287cf188, 0xf91b74ae, 0x21986636)
    TEST_ADD(0x36a00a90, 0xec015018, 0x22a15aa8)
    TEST_ADD(0x095693f9, 0x624e3a55, 0x6ba4ce4e)
    TEST_ADD(0xdebf6070, 0xf718da20, 0xd5d83a90)
    TEST_ADD(0x2ce298b8, 0xda634914, 0x0745e1cc)
    TEST_ADD(0x06b9ea50, 0xd2b2d100, 0xd96cbb50)
    TEST_ADD(0x493fbc87, 0x8f6d8850, 0xd8ad44d7)
    TEST_ADD(0x7336c9a6, 0x0c99b200, 0x7fd07ba6)
    TEST_ADD(0x3d7efb3f, 0xfcd25f3a, 0x3a515a79)
    TEST_ADD(0x1bed2920, 0x36a66558, 0x52938e78)
    TEST_ADD(0x0f3b1014, 0xa200954f, 0xb13ba563)
    TEST_ADD(0x0d6e8886, 0x5b2e074c, 0x689c8fd2)
    TEST_ADD(0x2deb13d0, 0x26feddc2, 0x54e9f192)
    TEST_ADD(0xe5764f49, 0x20000380, 0x057652c9)
    TEST_ADD(0x9f35bb7c, 0x7045536d, 0x0f7b0ee9)
    TEST_ADD(0xca4544c4, 0x25e6b2fa, 0xf02bf7be)
    TEST_ADD(0xe86dce88, 0xeef51a30, 0xd762e8b8)
    TEST_ADD(0x1a92a5a0, 0xd1eac31b, 0xec7d68bb)
    TEST_ADD(0xdec0f040, 0x59bc3412, 0x387d2452)
    TEST_ADD(0xe4b62124, 0x6f1772b8, 0x53cd93dc)
    TEST_ADD(0x8e768b29, 0x4edde040, 0xdd546b69)
    TEST_ADD(0xbae5f8ae, 0x690a1ae4, 0x23f01392)
    TEST_ADD(0x31964010, 0xae2c7275, 0xdfc2b285)
    TEST_ADD(0x195cf434, 0x8061cc2c, 0x99bec060)
    TEST_ADD(0xa6c1a140, 0x33fa4568, 0xdabbe6a8)
    TEST_ADD(0x08d7e000, 0x2b221251, 0x33f9f251)
    TEST_ADD(0xc48f1392, 0x2d9d31b9, 0xf22c454b)
    TEST_ADD(0xbccd54c8, 0x0a2c3b14, 0xc6f98fdc)
    TEST_ADD(0x95f0c7b0, 0x00000000, 0x95f0c7b0)
    TEST_ADD(0xc4173200, 0x00000000, 0xc4173200)
    TEST_ADD(0xd9306edd, 0x00000000, 0xd9306edd)
    TEST_ADD(0xc9f88a42, 0x00000000, 0xc9f88a42)
    TEST_ADD(0x1cf190aa, 0x00000000, 0x1cf190aa)
    TEST_ADD(0x04426fba, 0x00000000, 0x04426fba)
    TEST_ADD(0x5290f108, 0x00000000, 0x5290f108)
    TEST_ADD(0xa85ad630, 0x00000000, 0xa85ad630)
    TEST_ADD(0x6bb927f0, 0x00000000, 0x6bb927f0)
    TEST_ADD(0x839719a0, 0x00000000, 0x839719a0)
    TEST_ADD(0xc25dccc6, 0x00000000, 0xc25dccc6)
    TEST_ADD(0xe6c7ae37, 0x00000000, 0xe6c7ae37)
    TEST_ADD(0xaca03790, 0x00000000, 0xaca03790)
    TEST_ADD(0x5930eb58, 0x00000000, 0x5930eb58)
    TEST_ADD(0x01d8a468, 0x00000000, 0x01d8a468)
    TEST_ADD(0xd45109f4, 0x00000000, 0xd45109f4)
    TEST_ADD(0x2edfbeb6, 0x00000000, 0x2edfbeb6)
    TEST_ADD(0x61f5c300, 0x00000000, 0x61f5c300)
    TEST_ADD(0xcd1a93d0, 0x00000000, 0xcd1a93d0)
    TEST_ADD(0x87507900, 0x00000000, 0x87507900)
    TEST_ADD(0xd5f2358e, 0x00000000, 0xd5f2358e)
    TEST_ADD(0x66a2afa8, 0x00000000, 0x66a2afa8)
    TEST_ADD(0x8b3c2c00, 0x00000000, 0x8b3c2c00)
    TEST_ADD(0x8d438a80, 0x00000000, 0x8d438a80)
    TEST_ADD(0x71fb6f30, 0x00000000, 0x71fb6f30)
    TEST_ADD(0xf76be7b1, 0x00000000, 0xf76be7b1)
    TEST_ADD(0x6b3a2a6e, 0x00000000, 0x6b3a2a6e)
    TEST_ADD(0x8ee4975a, 0x00000000, 0x8ee4975a)
    TEST_ADD(0xf70bc684, 0x00000000, 0xf70bc684)
    TEST_ADD(0xd88881f7, 0x00000000, 0xd88881f7)
    TEST_ADD(0xabeff090, 0x00000000, 0xabeff090)
    TEST_ADD(0x4ca387b5, 0x00000000, 0x4ca387b5)
    TEST_ADD(0xfb355d54, 0x00000000, 0xfb355d54)
    TEST_ADD(0x8f719220, 0x00000000, 0x8f719220)
    TEST_ADD(0x63101805, 0x00000000, 0x63101805)
    TEST_ADD(0x8f8a9c94, 0x00000000, 0x8f8a9c94)
    TEST_ADD(0xc0f0e740, 0x00000000, 0xc0f0e740)
    TEST_ADD(0xe02a41e0, 0x00000000, 0xe02a41e0)
    TEST_ADD(0x7b591a80, 0x00000000, 0x7b591a80)
    TEST_ADD(0xe56df940, 0x00000000, 0xe56df940)
    TEST_ADD(0x7e0e1b60, 0x00000000, 0x7e0e1b60)
    TEST_ADD(0x4d39ef10, 0x00000000, 0x4d39ef10)
    TEST_ADD(0x40ca80c8, 0x00000000, 0x40ca80c8)
    TEST_ADD(0xdd070424, 0x00000000, 0xdd070424)
    TEST_ADD(0xd8f78190, 0x00000000, 0xd8f78190)
    TEST_ADD(0xb8914282, 0x00000000, 0xb8914282)
    TEST_ADD(0x60d9761c, 0x00000000, 0x60d9761c)
    TEST_ADD(0x16d7c65c, 0x00000000, 0x16d7c65c)
    TEST_ADD(0x6b740588, 0x00000000, 0x6b740588)
    TEST_ADD(0x25e5fad8, 0x00000000, 0x25e5fad8)
    TEST_ADD(0x00000000, 0xdcaf5e62, 0xdcaf5e62)
    TEST_ADD(0x00000000, 0x9ccec250, 0x9ccec250)
    TEST_ADD(0x00000000, 0x27e38688, 0x27e38688)
    TEST_ADD(0x00000000, 0x27e8ccbe, 0x27e8ccbe)
    TEST_ADD(0x00000000, 0xc57dbed0, 0xc57dbed0)
    TEST_ADD(0x00000000, 0xfd8688df, 0xfd8688df)
    TEST_ADD(0x00000000, 0x6571faf7, 0x6571faf7)
    TEST_ADD(0x00000000, 0x331884e0, 0x331884e0)
    TEST_ADD(0x00000000, 0xcc697f17, 0xcc697f17)
    TEST_ADD(0x00000000, 0x1d119540, 0x1d119540)
    TEST_ADD(0x00000000, 0xf38b1eb4, 0xf38b1eb4)
    TEST_ADD(0x00000000, 0xb1111f18, 0xb1111f18)
    TEST_ADD(0x00000000, 0x5af9ecd2, 0x5af9ecd2)
    TEST_ADD(0x00000000, 0x5c501b02, 0x5c501b02)
    TEST_ADD(0x00000000, 0x5f795d74, 0x5f795d74)
    TEST_ADD(0x00000000, 0x67987f80, 0x67987f80)
    TEST_ADD(0x00000000, 0xfbe58fce, 0xfbe58fce)
    TEST_ADD(0x00000000, 0x371cf200, 0x371cf200)
    TEST_ADD(0x00000000, 0x9a22a180, 0x9a22a180)
    TEST_ADD(0x00000000, 0x3517fe00, 0x3517fe00)
    TEST_ADD(0x00000000, 0x02a079e0, 0x02a079e0)
    TEST_ADD(0x00000000, 0xde7e72e0, 0xde7e72e0)
    TEST_ADD(0x00000000, 0x688c9aae, 0x688c9aae)
    TEST_ADD(0x00000000, 0x927dba60, 0x927dba60)
    TEST_ADD(0x00000000, 0x433939c8, 0x433939c8)
    TEST_ADD(0x00000000, 0xa68c9b88, 0xa68c9b88)
    TEST_ADD(0x00000000, 0xfe365800, 0xfe365800)
    TEST_ADD(0x00000000, 0xa2589558, 0xa2589558)
    TEST_ADD(0x00000000, 0xa280193c, 0xa280193c)
    TEST_ADD(0x00000000, 0x6ba8a1e0, 0x6ba8a1e0)
    TEST_ADD(0x00000000, 0x3a7d2c54, 0x3a7d2c54)
    TEST_ADD(0x00000000, 0x3a760f50, 0x3a760f50)
    TEST_ADD(0x00000000, 0x265c1a47, 0x265c1a47)
    TEST_ADD(0x00000000, 0x2ab31958, 0x2ab31958)
    TEST_ADD(0x00000000, 0x641e6088, 0x641e6088)
    TEST_ADD(0x00000000, 0xc5bcdbdb, 0xc5bcdbdb)
    TEST_ADD(0x00000000, 0xbeed03d0, 0xbeed03d0)
    TEST_ADD(0x00000000, 0x2377b600, 0x2377b600)
    TEST_ADD(0x00000000, 0xf99a3d40, 0xf99a3d40)
    TEST_ADD(0x00000000, 0xe005c4ac, 0xe005c4ac)
    TEST_ADD(0x00000000, 0xea36e54f, 0xea36e54f)
    TEST_ADD(0x00000000, 0x2c7ef160, 0x2c7ef160)
    TEST_ADD(0x00000000, 0x9f354ce8, 0x9f354ce8)
    TEST_ADD(0x00000000, 0xa5ea1069, 0xa5ea1069)
    TEST_ADD(0x00000000, 0xd1ee0242, 0xd1ee0242)
    TEST_ADD(0x00000000, 0x1fc60cf8, 0x1fc60cf8)
    TEST_ADD(0x00000000, 0x0f1b4000, 0x0f1b4000)
    TEST_ADD(0x00000000, 0x201cdee8, 0x201cdee8)
    TEST_ADD(0x00000000, 0x31c14954, 0x31c14954)
    TEST_ADD(0x00000000, 0x6e701f70, 0x6e701f70)
    TEST_ADD(0x00000000, 0x00000000, 0x00000000)
###detect exception
    bne s2, zero, inst_error
    nop
###score ++
    addiu s3, s3, 1
###output (s0<<24)|s3
inst_error:  
    sll t1, s0, 24
    or t0, t1, s3 
    sw t0, 0(s1)
    jr ra
    nop
END(n24_add_test)
